package com.gem.day09;

/**
 * 本类用来演示java.lang.Object类中的equals()和hashCode()方法
 * 
 * @author easonsy
 * 2020年7月28日 上午9:34:12
 */
public class EqualsDemo {
	public static void main(String[] args) {
		User u1 = new User("ben", 25);
		User u2 = new User("ben", 26);
		//==比较的是内存地址
		System.out.println(u1 == u2);
		/*
		 * equals()方法默认情况下比较内存地址;但是可以重写修改规则,
		 * 修改成比较对象属性值是否相同,属性值都相同即认定是同一个对象
		 */
		System.out.println(u1.equals(u2));

		/*
		 * 重写hashCode()保证:
		 * 1.equals方法返回true,表示是相同对象,此时hashCode一定相同
		 * 2.equals方法返回false,表示是不同的对象,此时hashCode尽可能保证不同[有几率相同,取决于hash算法的优秀程度]
		 */
		System.out.println(u1.hashCode());
		System.out.println(u2.hashCode());
		System.out.println(u1.hashCode() == u2.hashCode());
	}
}
